package com.chinacoal.microservice.impl.service;

import java.util.List;

import com.baomidou.mybatisplus.plugins.Page;
import com.chinacoal.microservice.model.wofkflow.QueryProcessParam;
import com.chinacoal.microservice.model.wofkflow.entity.CatalogEntity;
import com.chinacoal.microservice.model.wofkflow.entity.ProcessEntity;
import com.chinacoal.microservice.model.wofkflow.resource.WrapProcessCatalog;
import com.eos.workflow.api.IBPSServiceClient;
import com.eos.workflow.data.WFActivityDefine;

/**  
 * @Package: com.chinacoal.microservice.impl.service.ProcessService
 * @ClassName: ProcessService
 * @ClassDesc: 流程Service
 * @Createby: sunh
 * @CreatedDate: 2019-12-03 14:45:00
 */  
public interface ProcessService {
	
	/**  
	 * @Package: com.chinacoal.microservice.impl.service.ProcessService.getProcessCatalog
	 * @MethodName: getProcessCatalog
	 * @MethodDesc: 获取流程目录
	 * @ParamList: {
	 *				 @param page
	 *				 @param pageSize
	 *				 @param queryParam
	 *			   }
	 * @Return: Page<CatalogEntity>
	 * @Createby: sunh
	 * @CreatedDate: 2019-12-03 14:43:57
	 */ 
	public Page<CatalogEntity> getProcessCatalog(Integer page, Integer pageSize, QueryProcessParam queryParam) throws Exception;
	
	/**  
	 * @Package: com.chinacoal.microservice.impl.service.ProcessService.getProcessList
	 * @MethodName: getProcessList
	 * @MethodDesc: 查询流程列表
	 * @ParamList: {
	 *				 @param page
	 *				 @param pageSize
	 *				 @param queryParam
	 *			   }
	 * @Return: Page<ProcessEntity>
	 * @Createby: sunh
	 * @CreatedDate: 2019-12-03 14:44:07
	 */ 
	public Page<ProcessEntity> getProcessList(Integer page, Integer pageSize, QueryProcessParam queryParam) throws Exception;
	
	/**  
	 * @Package: com.chinacoal.microservice.impl.service.ProcessService.getProcessActivity
	 * @MethodName: getProcessActivity
	 * @MethodDesc: 查询流程活动列表
	 * @ParamList: {
	 *				 @param client
	 *				 @param processId
	 *			   }
	 * @Return: List<WFActivityDefine>
	 * @Createby: sunh
	 * @CreatedDate: 2019-12-03 14:44:28
	 */ 
	public List<WFActivityDefine> getProcessActivity(IBPSServiceClient client, Long processId) throws Exception;
	
	/**  
	 * @Package: com.chinacoal.microservice.impl.service.ProcessService.getProcessTree
	 * @MethodName: getProcessTree
	 * @MethodDesc: 查询流程树
	 * @ParamList: {
	 *				 @param userId
	 *				 @param name
	 *				 @param processId
	 *				 @param parentCatalogId
	 *			   }
	 * @Return: WrapProcessCatalog
	 * @Createby: sunh
	 * @CreatedDate: 2019-12-03 14:44:49
	 */ 
	public WrapProcessCatalog getProcessTree(Integer userId, String name, Long processId, String parentCatalogId) throws Exception;
	
	public String getFlowChart(String instanceId) throws Exception;
}
